﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Bank
{
	/// <summary>
	/// Класс-описатель клиента
	/// </summary>
    class ClientInfo
    {
		/// <summary>
		/// Тип клиента (физлицо - юрлицо)
		/// </summary>
		public ClientType clType { get; set; }
		/// <summary>
		/// Адрес клиента (организации)
		/// </summary>
		public string Address { get; set; }

		/// <summary>
		/// Имя Организации
		/// </summary>
		public string OrgName { get; set; }

        /// <summary>
		/// Имя клиента
        /// </summary>
        public string FistName { get; set; }
        /// <summary>
		/// Фамилия клиента
        /// </summary>
        public string LastName { get; set; }
        /// <summary>
		/// Дата рождения клиента
        /// </summary>
        public DateTime dob { get; set; }
        /// <summary>
		/// Номер паспорта клиента
        /// </summary>
        public string PassportNumber { get; set; }

		/// <summary>
		/// Ввод строки с консоли
		/// </summary>
		/// <returns></returns>
		string GetString()
		{
			return Console.ReadLine();
		}

		/// <summary>
		/// Ввод даты с консоли
		/// </summary>
		/// <returns></returns>
		DateTime GetDate()
		{
			return DateTime.Parse(Console.ReadLine());
		}

		/// <summary>
		/// Ввод целого числа с консоли
		/// </summary>
		/// <returns></returns>
		int GetInt()
		{			  
			return int.Parse(Console.ReadLine());
		}

		/// <summary>
		/// Вывод сообщения в консоль
		/// </summary>
		/// <param name="msg"></param>
		void Message(string msg)
		{
			Console.WriteLine(msg);
		}

		/// <summary>
		/// Конструктор
		/// </summary>
		public ClientInfo()
		{
			this.Message("Введите тип клиента (0-физлицо; 1-юрлицо): ");
			int TypeCode = this.GetInt();

			if (!Enum.IsDefined(typeof(ClientType), TypeCode))
			{
				throw new InvalidOperationException("Такого типа клиента не существует");
			}
			this.clType = (ClientType)TypeCode;

			// заполним данные о клиенте в зависимости от типа клиента
			switch (this.clType)
			{
				case ClientType.Phisical:
					this.Message("Введите Имя клиента: ");
					FistName = this.GetString();
					this.Message("Введите Фамилию клиента: ");
					LastName = this.GetString();
					this.Message("Введите дату рождения клиента: ");
					dob = this.GetDate();
					//(DateTime.Now - dob).
					this.Message("Введите адрес клиента: ");
					Address = this.GetString();
					this.Message("Введите серию и номер паспорта: ");
					PassportNumber = this.GetString();
					break;
				case ClientType.Legal:
					this.Message("Введите название организации: ");
					OrgName = this.GetString();
					this.Message("Введите адрес организации: ");
					Address = this.GetString();
					break;
			}

		}

    }
}
